const express = require('express')
// 引入执行SQL命令方法
const { query } = require('../db')
// 创建路由器对象
const router = express.Router()

// 管理员列表(get /adminList)
router.get('/adminList',async (req,res,next) => {
  // 执行SQL命令
  try{
    var data = await query('select a.id,a.uname,b.role_name from hs_admin a,hs_role b where a.role_id=b.id')
  }catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '管理员列表',
    data
  })
})
// 添加管理员(post /admin)
router.post('/admin',async (req,res,next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 验证是否为空
  if(!obj.uname) {
    return res.send({
      code: 401,
      msg: '用户名不能为空'
    })
  }
  // 验证密码是否为空
  if(!obj.upwd) {
    return res.send({
      code: 402,
      msg: '密码不能为空'
    })
  }
  if(!obj.role_id) {
    return res.send({
      code: 403,
      msg: '所属角色不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('insert into hs_admin set ?',[obj])
  }catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '管理员添加成功'
  })
})
// 修改管理员(put /admin)
router.put('/admin',async (req,res,next) => {
  // 获取post传递的参数
  const obj = req.body
  // console.log(obj)
  // 判断是否为空
  // 使用for-in获取对象中的每个属性，判断属性值是否为空
  // 初始化状态码
  let code = 400
  for(let k in obj) {
    code++
    // console.log(k, obj[k])
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 执行SQL命令
  try {
    var data = await query('update hs_admin set ? where id=?',[obj,obj.id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  // 判断是否修改成功
  if(data.changedRows === 0) {
    res.send({
      code: 410,
      msg: '管理员修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '管理员修改成功'
    })
  }
})
// 删除管理员(delete /admin)
router.delete('/admin',async (req,res,next) => {
  // 获取get传递的参数
  const obj = req.query
  console.log(obj)
  // 判断是否存在
  if(!obj.id) {
    return res.send({
      code: 401,
      msg: 'id不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('delete from hs_admin where id=?',[obj.id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '删除成功'
    })
  }
})
// 角色列表(get /role)
router.get('/role', async (req,res,next) => {
  // 执行SQL命令，查询所有角色
  try {
    var data = await query('select * from hs_role')
  } catch(err) {
    return next(err)
  }
  res.send({
    code: 200,
    msg: '角色列表',
    data
  })
})
// 添加角色(post /role)
router.post('/role',async (req,res,next) => {
  // 获取post传递的参数
  const {role_name} = req.body
  // 验证角色名是否为空
  if(!role_name) {
    return res.send({
      code: 401,
      msg: '角色名不能为空'
    })
  }
  // 创建的时间，自动获取当前时间的时间戳
  const ctime = Date.now()
  // 执行SQL命令
  try {
    var data = await query('insert into hs_role values(null,?,?)',[role_name,ctime])
  } catch(err) {
    return next(err)
  }
  res.send({
    code: 200,
    msg: '角色添加成功'
  })
})
// 修改角色(put /role)
router.put('/role',async (req,res,next) => {
  // 获取post传递的参数
  const {id,role_name} = req.body
  // 判断是否为空
  if(!id) {
    return res.send({
      code: 402,
      msg: 'id不能为空'
    })
  }
  if(!role_name) {
    return res.send({
      code: 401,
      msg: 'role_name不能为空'
    })
  }
  // 执行SQL命令
  try{
    var data = await query('update hs_role set role_name=? where id=?',[role_name,id])
  }catch(err){
    return next(err)
  }
  // 判断修改成功，通过changedRows
  if(data.changedRows === 0) {
    res.send({
      code: 410,
      msg: '修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '修改成功'
    })
  }

})
// 删除角色(delete /role)
router.delete('/role',async (req,res,next) => {
  // 获取get传递的参数
  const {id} = req.query
  console.log(id)
  // 执行SQL命令
  try {
    var data = await query('delete from hs_role where id=?',[id])
  }catch(err) {
    return next(err)
  }
  // 删除通过affectedRows判断
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '删除成功'
    })
  }
})

// 暴露
module.exports = router